from configparser import ConfigParser, NoOptionError, NoSectionError
from utils.handle_path import *
import os


class HandleConf(ConfigParser):
    """
    处理conf.ini配置文件的类。

    参数:
    - filename: 配置文件的名称。

    方法:
    - __init__(self, filename): 类的初始化方法，读取指定的配置文件。
    - get_value(self, section, option): 获取配置文件中指定节(section)和选项(option)的值。
    """

    def __init__(self, filename):
        """
        初始化Handle_conf类实例。

        参数:
        - filename: 配置文件的路径。
        """
        super(HandleConf, self).__init__()  # 调用父类构造函数
        if not os.path.exists(filename):  # 如果配置文件不存在
            raise FileNotFoundError('配置文件不存在！')
        self.filename = filename  # 存储配置文件名
        self.read(self.filename)  # 读取配置文件

    def get_value(self, section, option):
        """
        从配置文件中获取指定节(section)和选项(option)的值。

        参数:
        - section: 配置文件中的一个节。
        - option: 节中的一个选项。

        返回值:
        - 获取到的选项值，如果无法获取则返回None。
        """
        try:
            value = self.get(section, option)  # 尝试获取值
            return value
        except(NoSectionError, NoOptionError) as e:
            print(f"获取配置出错：{e}")
            return None  # 如果发生异常则返回None


# 构造配置文件处理对象
if not os.path.exists(conf_path):  # 如果配置文件不存在
    raise FileNotFoundError('配置文件路径不存在！')
path = os.path.join(conf_path, 'conf.ini')  # 拼接配置文件完整路径
conf = HandleConf(path)  # 创建配置文件处理对象
# print(conf.get_value('test_data', 'url'))
